<?php

if(!isset($_SESSION)) /*Inicialización de variables de sesion*/
{
  session_start();
}

include ('ModelConexion.php');

class Horarios extends Conexion
{

  public $m_ca_codigo_ca;
  public $m_ca_cedula;
  public $m_ca_codigo_curso;
  public $m_ca_grupo;
  public $m_ca_aula;
  public $m_ca_hora;
  public $m_ca_hora2;
  public $m_ca_periodo;
  public $m_ca_anno;

  public function Ca_Encabezado_Crear($m_ca_codigo_ca,$m_ca_anno,$m_ca_periodo)
  {

    if( $m_ca_codigo_ca != '' && $m_ca_anno != '' && $m_ca_periodo != '' )
    {
      
      $objeto = new Conexion(); 
      $objeto->Consulta("
        INSERT INTO caencabezado(codigoHorario,periodo,anno) 
        VALUES('$m_ca_codigo_ca','$m_ca_periodo','$m_ca_anno')
        ");
      if($objeto->get_m_us_filas_afectadas()>=1)
      {
         $this->set_m_us_mensaje(true);
      }
      else
      {
        $this->set_m_us_mensaje(false);
      }
     
    }
    else
    {
      $this->set_m_us_mensaje(false);
    }
    unset($objeto);
  }

   public function Ca_Detalles_Crear($m_ca_cedula,$m_ca_codigo_curso,$m_ca_nrc,$m_ca_codigo_horario,$m_ca_hora_I,$m_ca_hora_F,$m_ca_dia,$m_ca_aula,$m_ca_grupo)
  {

    if($m_ca_cedula != '' && $m_ca_codigo_curso != '' && $m_ca_nrc != '' && $m_ca_codigo_horario != '' && $m_ca_hora_I != '' && $m_ca_hora_F != '' && $m_ca_dia != ''  && $m_ca_aula != '' && $m_ca_grupo != '')
    {
      
      $objeto = new Conexion(); 
      
      $m_ca_hora_I=$m_ca_hora_I.':00';
      //¿¿verificar aqui por que se le agrega una h a la hora de final??.
      $m_ca_hora_F=$m_ca_hora_F.':00';
      $objeto->Consulta("
        INSERT INTO cadetalles
            (cedula,
             nrc,
             codigoCurso,
             codigoHorario,
             aula,
             horaI,
             horaF,
             grupo,
             dia) VALUES('$m_ca_cedula',
             '$m_ca_nrc',
              '$m_ca_codigo_curso',
              '$m_ca_codigo_horario',
              '$m_ca_aula',
              '$m_ca_hora_I',
              '$m_ca_hora_F',
              '$m_ca_grupo',
              '$m_ca_dia');
        ");
      if($objeto->get_m_us_filas_afectadas()>=1)
      {
         $this->set_m_us_mensaje(true);
      }
      else
      {
        $this->set_m_us_mensaje(false);
      }
     
    }
    else
    {
      $this->set_m_us_mensaje(false);
    }
    unset($objeto);
  }
/*
AHORA VIENE:
1 ANALIZAR LAS CONSULTAS PARA VALIDAR BIEN.
2 ADAPTARSE A LO DEL FORMATO DE NUEVA HORA.
SIN MAS POR EL MOMENTO*/

    public function Disponibilidad_Aula($ciclo,$dia,$hora_I,$hora_F,$aula)
    { 
      //en $hora_I solo viene un numero int.
      //hora__ se convierte en formato hora al concatenarlo con .':00'
      $hora_i_a=$hora_I.':00';
      //le restamos una hora 
      $resta_hora=$hora_F-1;
      //le adjuntamos :55 y se convierte en tipo time.
      $hora_f_a=$resta_hora.':55';
      //se le pone 55, por ejemplo que se quiere un curso que finalice a las 4 

       $objeto = new Conexion();
       
       /*QUEDEEEEEEEE AQUIIIII
       Ahora viene verificar las consultas con el archivo prueba.php*/
      //para verificar la hora de inicio (parametro) no choque con hora de inicio y final ya registrada(bd). 
       $consulta = $objeto->Consulta("
       SELECT cadetalles.aula,cadetalles.horaI,cadetalles.horaF
       FROM cadetalles
       WHERE TIME('$hora_i_a') BETWEEN cadetalles.horaI AND cadetalles.horaF
       AND TIME('07:00')<cadetalles.horaI
       AND cadetalles.aula='$aula'
       AND cadetalles.dia='$dia'
       AND cadetalles.codigoHorario='$ciclo'
       AND cadetalles.horaF<TIME('22:00');
        ");
         if($objeto->get_m_us_filas_afectadas()>=1)
        {
          
          //true=esta ocupada
           $this->set_m_disponibilidad_aula_I(true);
        }
        else
        {
          //false=esta desocupada
          $this->set_m_disponibilidad_aula_I(false);
        }
          //para verificar la hora final
            $consulta_II = $objeto->Consulta("
       SELECT cadetalles.aula,cadetalles.horaI,cadetalles.horaF
       FROM cadetalles
       WHERE TIME('$hora_f_a') BETWEEN cadetalles.horaI AND cadetalles.horaF
       AND TIME('07:00')<cadetalles.horaI
       AND cadetalles.aula='$aula'
       AND cadetalles.dia='$dia'
       AND cadetalles.codigoHorario='$ciclo'
       AND cadetalles.horaF<TIME('22:00');
        ");
         if($objeto->get_m_us_filas_afectadas()>=1)
        {
          
          //true=esta ocupada
           $this->set_m_disponibilidad_aula_II(true);
        }
        else
        {
          //false=esta desocupada
          $this->set_m_disponibilidad_aula_II(false);
        }

        //verifica si hay alguna hora registrada entre el rango que se forma con Hora de Inicio y final (parametros)
       $consulta_aula_Inverso = $objeto->Consulta("
       SELECT cadetalles.aula,cadetalles.horaI,cadetalles.horaF
       FROM cadetalles 
       WHERE cadetalles.horaI BETWEEN TIME('$hora_i_a') AND TIME('$hora_f_a')
       AND TIME('07:00')<cadetalles.horaI
       AND cadetalles.aula='$aula'
       AND cadetalles.dia='$dia' 
       AND cadetalles.codigoHorario='$ciclo'
       AND cadetalles.horaF<TIME('22:00');   
        ");
         if($objeto->get_m_us_filas_afectadas()>=1)
        {
          //true=esta ocupada
           $this->set_m_disponibilidad_aula_Inversa(true);
        }
        else
        {
          //false=esta desocupada
          $this->set_m_disponibilidad_aula_Inversa(false);
        }

        $consulta_aula_InversoII = $objeto->Consulta("
       SELECT cadetalles.aula,cadetalles.horaI,cadetalles.horaF
       FROM cadetalles 
       WHERE cadetalles.horaF BETWEEN TIME('$hora_i_a') AND TIME('$hora_f_a')
       AND TIME('07:00')<cadetalles.horaI
       AND cadetalles.aula='$aula'
       AND cadetalles.dia='$dia' 
       AND cadetalles.codigoHorario='$ciclo'
       AND cadetalles.horaF<TIME('22:00');   
        ");
         if($objeto->get_m_us_filas_afectadas()>=1)
        {
          //true=esta ocupada
           $this->set_m_disponibilidad_aula_InversaII(true);
        }
        else
        {
          //false=esta desocupada
          $this->set_m_disponibilidad_aula_InversaII(false);
        }
    unset($objeto);
    }
   
    public function Disponibilidad_Profe($ciclo,$dia,$hora_I_P,$hora_F_P,$cedula)
    {    
      //en $hora_I_P solo viene un numero int.
      //hora_i_p se convierte en formato hora al concatenarlo con .':00'
      $hora_i_p=$hora_I_P.':00';
      //le restamos una hora 
      $resta_hora_p=$hora_F_P-1;
      //le adjuntamos :55 y se convierte en tipo time.
      $hora_f_p=$resta_hora_p.':55';
      //se le pone 55, por ejemplo que se quiere un curso que finalice a las 4 
       $objeto = new Conexion(); 
       //$hora_I_P=hora inicio profe. && $hora_F_P=hora final profe
        
       $consulta = $objeto->Consulta("
       SELECT cadetalles.aula,cadetalles.horaI,cadetalles.horaF
       FROM cadetalles
       WHERE TIME('$hora_i_p') BETWEEN cadetalles.horaI AND cadetalles.horaF
       AND TIME('07:00')<cadetalles.horaI
       AND cadetalles.cedula='$cedula'
       AND cadetalles.dia='$dia' 
       AND cadetalles.codigoHorario='$ciclo'
       AND cadetalles.horaF<TIME('22:00');   
        ");
         if($objeto->get_m_us_filas_afectadas()>=1)
        {
          //true=esta ocupada
           $this->set_m_disponibilidad_prof_I(true);
        }
        else
        {
          //false=esta desocupada
          $this->set_m_disponibilidad_prof_I(false);
        }

         $consulta_Prof_II = $objeto->Consulta("
       SELECT cadetalles.aula,cadetalles.horaI,cadetalles.horaF
       FROM cadetalles
       WHERE TIME('$hora_f_p') BETWEEN cadetalles.horaI AND cadetalles.horaF
       AND TIME('07:00')<cadetalles.horaI
       AND cadetalles.cedula='$cedula'
       AND cadetalles.dia='$dia' 
       AND cadetalles.codigoHorario='$ciclo'
       AND cadetalles.horaF<TIME('22:00');   
        ");
         if($objeto->get_m_us_filas_afectadas()>=1)
        {
          //true=esta ocupada
           $this->set_m_disponibilidad_prof_II(true);
        }
        else
        {
          //false=esta desocupada
          $this->set_m_disponibilidad_prof_II(false);
        }

         $consulta_Prof_Inverso = $objeto->Consulta("
       SELECT cadetalles.aula,cadetalles.horaI,cadetalles.horaF
       FROM cadetalles 
       WHERE cadetalles.horaI BETWEEN TIME('$hora_i_p') AND TIME('$hora_f_p')
       AND TIME('07:00')<cadetalles.horaI
       AND cadetalles.cedula='$cedula'
       AND cadetalles.dia='$dia' 
       AND cadetalles.codigoHorario='$ciclo'
       AND cadetalles.horaF<TIME('22:00');   
        ");
         if($objeto->get_m_us_filas_afectadas()>=1)
        {
          //true=esta ocupada
           $this->set_m_disponibilidad_prof_Inversa(true);
        }
        else
        {
          //false=esta desocupada
          $this->set_m_disponibilidad_prof_Inversa(false);
        }

             $consulta_Prof_InversoII = $objeto->Consulta("
       SELECT cadetalles.aula,cadetalles.horaI,cadetalles.horaF
       FROM cadetalles 
       WHERE cadetalles.horaF BETWEEN TIME('$hora_i_p') AND TIME('$hora_f_p')
       AND TIME('07:00')<cadetalles.horaI
       AND cadetalles.cedula='$cedula'
       AND cadetalles.dia='$dia' 
       AND cadetalles.codigoHorario='$ciclo'
       AND cadetalles.horaF<TIME('22:00');   
        ");
         if($objeto->get_m_us_filas_afectadas()>=1)
        {
          //true=esta ocupada
           $this->set_m_disponibilidad_prof_InversaII(true);
        }
        else
        {
          //false=esta desocupada
          $this->set_m_disponibilidad_prof_InversaII(false);
        }

        //esto es para obtener solamente el año ya que el codigo de horario esta compuesto por 1 || 2 caracteres despues de los 4 valores del año ejem 2014II
       $anno_true=substr($ciclo, 0, 4);
      /*Solamente prueba ?>
       <script type="text/javascript">
       alert ("<?php echo $anno_true.' '.$cedula.'  Fin'  ?>");
       //alert('<?php echo '$anno_true'; ?>')
       </script>
       <?php*/
       
       $consulta_verificar_dl = $objeto->Consulta("
        SELECT DISTINCT pacademico_panno.cedula 
        FROM pacademico_panno,papersonal
        WHERE papersonal.cedula=pacademico_panno.cedula
        AND pacademico_panno.anno='$anno_true'
        AND pacademico_panno.cedula='$cedula';
        ");
         if($objeto->get_m_us_filas_afectadas()>=1)
        {
          //true=si tiene datos
          //aqui si lo puedo registrar 
           $this->set_verificar_dl(true);
        }
        else
        {
          //false=no tiene datos
          //aqui no lo puedo registrar 
          $this->set_verificar_dl(false);
        }


        //vamos a verificar que el prof existe
         $consulta_verificar_dl = $objeto->Consulta("
          SELECT cedula 
          FROM papersonal
          WHERE cedula = '$cedula';
        ");
         if($objeto->get_m_us_filas_afectadas()>=1)
        {
          //true=si tiene datos 
           $this->set_m_existe_prof(true);
        }
        else
        {
          //false=no tiene datos
          $this->set_m_existe_prof(false);
        }


        unset($objeto);
    }

  /*  public function Verificar_dl($anno,$cedula)
    {
 
      


    }*/

//-------------Ultima Linea Buenaaa------------------
 

 //verifica_dl
  public function get_verificar_dl() 
  {
    return $this->M_verificar_dl;
  }
    public function set_verificar_dl($New_M_verificar_dl) 
  {
    $this->M_verificar_dl = $New_M_verificar_dl;
  }

 //verifica_dl

 //aula

    //para verificar que la Hora de inicio no choque.
    public function get_m_disponibilidad_aula_I() 
  {
    return $this->M_disponibilidad_aula;
  }
    public function set_m_disponibilidad_aula_I($New_M_disponibilidad_aula) 
  {
    $this->M_disponibilidad_aula = $New_M_disponibilidad_aula;
  }
    //para verificar que la Hora de final no choque.
  public function get_m_disponibilidad_aula_II() 
  {
    return $this->M_disponibilidad_aula1;
  }
    public function set_m_disponibilidad_aula_II($New_M_disponibilidad_aula_II) 
  {
    $this->M_disponibilidad_aula1 = $New_M_disponibilidad_aula_II;
  }

  //para verificar que las horas(para hacer horarios) que hay no choquen con las que vienen
  public function get_m_disponibilidad_aula_Inversa() 
  {
    return $this->M_disponibilidad_aula1;
  }
    public function set_m_disponibilidad_aula_Inversa($New_M_disponibilidad_aula_II) 
  {
    $this->M_disponibilidad_aula1 = $New_M_disponibilidad_aula_II;
  }

   public function get_m_disponibilidad_aula_InversaII() 
  {
    return $this->M_disponibilidad_aula1;
  }
    public function set_m_disponibilidad_aula_InversaII($New_M_disponibilidad_aula_II) 
  {
    $this->M_disponibilidad_aula1 = $New_M_disponibilidad_aula_II;
  }
//auka

//profe

    //para verificar que la Hora de inicio no choque.
    public function get_m_disponibilidad_prof_I() 
  {
    return $this->M_disponibilidad_prof;
  }
    public function set_m_disponibilidad_prof_I($New_M_disponibilidad_prof) 
  {
    $this->M_disponibilidad_prof = $New_M_disponibilidad_prof;
  }
    //para verificar que la Hora de final no choque.
  public function get_m_disponibilidad_prof_II() 
  {
    return $this->M_disponibilidad_prof1;
  }
    public function set_m_disponibilidad_prof_II($New_M_disponibilidad_prof_II) 
  {
    $this->M_disponibilidad_prof1 = $New_M_disponibilidad_prof_II;
  }

  //para verificar que las horas(para hacer horarios) que hay no choquen con las que vienen
  public function get_m_disponibilidad_prof_Inversa() 
  {
    return $this->M_disponibilidad_prof1;
  }
    public function set_m_disponibilidad_prof_Inversa($New_M_disponibilidad_prof_II) 
  {
    $this->M_disponibilidad_prof1 = $New_M_disponibilidad_prof_II;
  }

    public function get_m_disponibilidad_prof_InversaII() 
  {
    return $this->M_disponibilidad_prof1;
  }
    public function set_m_disponibilidad_prof_InversaII($New_M_disponibilidad_prof_II) 
  {
    $this->M_disponibilidad_prof1 = $New_M_disponibilidad_prof_II;
  }

  //verifica que profe exista en bd
  public function get_m_existe_prof() 
  {
    return $this->M_existe_prof;
  }
    public function set_m_existe_prof($New_m_existe_prof) 
  {
    $this->M_existe_prof = $New_m_existe_prof;
  }
//prof


  public function get_m_us_mensaje() 
  {
    return $this->M_Us_Mensaje;
  }
  public function set_m_us_mensaje($New_M_Us_Mensaje) 
  {
    $this->M_Us_Mensaje = $New_M_Us_Mensaje;
  }
  public function get_m_us_cedula() 
  {
    return $this->M_Us_cedula;
  }
  public function set_m_us_cedula($New_M_Us_cedula) 
  {
    $this->M_Us_cedula = $New_M_Us_cedula;
  }
  public function get_m_us_contrasena() 
  {
    return $this->M_Us_contrasena;
  }
  public function set_m_us_contrasena($New_M_Us_Contrasena) 
  {
    $this->M_Us_contrasena = $New_M_Us_Contrasena;
  }
  public function get_m_us_tipo() 
  {
    return $this->M_Us_tipo;
  }
  public function set_m_us_tipo($New_M_Us_tipo) 
  {
    $this->M_Us_tipo = $New_M_Us_tipo;
  }
 

 
}

 ?>
